어셈블리 언어 입문 변수와 레지스터 초기화 된 데이터의 선언 문법 : [변수이름][크기][초기값] 크기 : db(1byte), dw(2bytes), dd(4bytes), dq(8bytes) 위 데이터 선언 후 빌드시 메모리 정보 그림에서 보듯 변수 a,b,c,d는 연속해서 메모리 공간에 저장되어 있다. 초기화 되지 않은 데이터 문법 : [변수이름][크기][개수] 크기 : resb(1byte), resw(2bytes), resd... 어셈블리 언어 입문어셈블리 언어 입문 사칙연산 이번 범위 관련 명령 더하기 연산 문법: add a, b 의미: a = a + b a = Register or Memory b = Register or Memory or Constant (a, b 모두 메모리는 안됨) 빼기 연산 빼기 연산의 경우 위 더하기 연산과 완전히 같은 형태이다. add 만 sub로 바꿔주면 완전히 동일 곱하기 연산 문법: mul reg 의미: al에 reg를 곱해서 ... 어셈블리 언어 입문어셈블리 언어 입문 반복문, 배열, 함수 반복문 어셈블리 언어에서 반복문의 구현은 두 가지 방법이 있다. 첫번째는 cmp, jmp를 이용하여 구현 두번째 방법은 loop문을 이용 배열 배열 선언 및 초기화 배열 순회 출력 함수 두개의 입력값 중 큰값을 출력하는 함수... 어셈블리 언어 입문어셈블리 언어 입문 문자열과 엔디안 변수 선언 (한개 이상의 값) 위 코드 처럼 a에 값 하나가 아닌 연속된 값을 지정 할 수 있다. 문자열 변수 위 코드를 메모리상에서 확인해 보면 변수 msg의 값은 0x48,0x65,0x6c,0x6c,0x6f,0x20,0x57,0x6f,0x72,0x6c,0x64,0x0 임을 확인 할 수 있다. 아스키코드 매칭시 Hello World가 되고 마지막 0은 문자열의 끝을 알려주는 값이다. 실제로... 어셈블리 언어 입문어셈블리 언어 입문 레지스터 레지스터의 a b c d 는 각각 다른공간 여기서 a를 기준으로 rax = 64bits eax = 32bits ax = 16bits ah, al = 8bts 위 코드를 실행하면 rax 값은 0x1234가 된다. rax가 0x1234인 상황에서 위 코드를 실행하면 아래 8bits가 00으로 덮어써져서 결과는 0x1200이 된다.... 어셈블리 언어 입문어셈블리 언어 입문
변수와 레지스터 초기화 된 데이터의 선언 문법 : [변수이름][크기][초기값] 크기 : db(1byte), dw(2bytes), dd(4bytes), dq(8bytes) 위 데이터 선언 후 빌드시 메모리 정보 그림에서 보듯 변수 a,b,c,d는 연속해서 메모리 공간에 저장되어 있다. 초기화 되지 않은 데이터 문법 : [변수이름][크기][개수] 크기 : resb(1byte), resw(2bytes), resd... 어셈블리 언어 입문어셈블리 언어 입문 사칙연산 이번 범위 관련 명령 더하기 연산 문법: add a, b 의미: a = a + b a = Register or Memory b = Register or Memory or Constant (a, b 모두 메모리는 안됨) 빼기 연산 빼기 연산의 경우 위 더하기 연산과 완전히 같은 형태이다. add 만 sub로 바꿔주면 완전히 동일 곱하기 연산 문법: mul reg 의미: al에 reg를 곱해서 ... 어셈블리 언어 입문어셈블리 언어 입문 반복문, 배열, 함수 반복문 어셈블리 언어에서 반복문의 구현은 두 가지 방법이 있다. 첫번째는 cmp, jmp를 이용하여 구현 두번째 방법은 loop문을 이용 배열 배열 선언 및 초기화 배열 순회 출력 함수 두개의 입력값 중 큰값을 출력하는 함수... 어셈블리 언어 입문어셈블리 언어 입문 문자열과 엔디안 변수 선언 (한개 이상의 값) 위 코드 처럼 a에 값 하나가 아닌 연속된 값을 지정 할 수 있다. 문자열 변수 위 코드를 메모리상에서 확인해 보면 변수 msg의 값은 0x48,0x65,0x6c,0x6c,0x6f,0x20,0x57,0x6f,0x72,0x6c,0x64,0x0 임을 확인 할 수 있다. 아스키코드 매칭시 Hello World가 되고 마지막 0은 문자열의 끝을 알려주는 값이다. 실제로... 어셈블리 언어 입문어셈블리 언어 입문 레지스터 레지스터의 a b c d 는 각각 다른공간 여기서 a를 기준으로 rax = 64bits eax = 32bits ax = 16bits ah, al = 8bts 위 코드를 실행하면 rax 값은 0x1234가 된다. rax가 0x1234인 상황에서 위 코드를 실행하면 아래 8bits가 00으로 덮어써져서 결과는 0x1200이 된다.... 어셈블리 언어 입문어셈블리 언어 입문